/*
 * Copyright (c) 2022, Chongqing UCchip InfoTech Co.,Ltd
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2023-12-21     jlu          the first version
 */
#ifndef _UC_HEX_H_
#define _UC_HEX_H_

#ifdef __cplushplus
extern "C"
{
#endif

/**
 * @brief  16进制编码
 *
 * @param  dst 输出编码字符串
 * @param  src 输入字符串
 * @param  len 输入字符串长度
 * @return 成功返回0
 * @note   输出字符串长度为 2 * len + 1
 */
int hex_encode(char *dst, const char *src, int len);

/**
 * @brief  16进制解码
 *
 * @param  dst 输出解码字符串
 * @param  src 输入字符串
 * @param  len 输入字符串长度
 * @return 成功返回0，失败放回非0
 * @note   输出字符串长度为 len / 2 + 1
 */
int hex_decode(char *dst, const char *src, int len);

/**
 * @brief  Hex 解码
 *
 * @param  dst 输出字符串
 * @param  dst_len 输出字符串长度
 * @param  src 输入字符串
 * @param  src_len 输入字符串长度
 * @return 成功返回0，否则返回非0
 * @note   输出字符串需使用 rt_free 释放
 */
int string_hex_decode(char **dst, int *dst_len, const char *src, int src_len);

#ifdef __cplushplus
}
#endif // __cplushplus

#endif // _UC_HEX_H_
